home *** CD-ROM | disk | FTP | other *** search
- Short: V51.4 TCP Data Broadcast System (library & server)
- Author: hakan@parting.nu (Håkan Parting & Jeremy Friesner)
- Uploader: hakan@parting.nu (Håkan Parting)
- Version: 51.4
- Type: comm/net
- Requires: Workbench 2.04+, AmiTCP3.0b+ or compatible TCP stack
- Replaces: comm/net/AMarquee50.lha
-
- ----------------------------------------------------------------
-
- AMARQUEE v51.4
-
- (Released August 6th 2000)
-
- ----------------------------------------------------------------
-
-
- The Problem:
-
- You have a great idea for a killer multi-player Internet game
- or multi-user net app, but it's a total pain in the @)#$* to
- write all the TCP connection and data synchronization code
- you'll need to get it going. So you put your idea on the
- back-burner and go play "Lemmings" instead. And thus the
- Amiga is deprived of a fun Internet app. D-oh! :(
-
- The Solution: (well, okay, it's *a* solution, anyway)
-
- AMarquee is a system that handles all of the icky information
- distribution details for you, allowing you to concentrate on
- coding your application, rather than on which data goes into
- which socket when. AMarquee consists of a shared library and
- a TCP daemon, which work together to get your data where it
- needs to be. Your program calls simple amarquee.library
- functions to broadcast your data, and waits on a provided
- MsgPort for data from other hosts. Easy!
-
- Version 49+ of amarquee.library may be used in more serious network
- applications too, that cannot use the amarquee protocol, like FTP and HTTP
- clients. This in the same easy fashioned way!
-
- Features of amarquee.library (the shared library/API):
-
- - Programs written to use amarquee.library will work transparently
- with Inet225, AmiTCP, Miami, or any other TCP stack that is
- "AmiTCP compatible".
- - Has a simple API that requires no knowledge of multithreading
- techniques or socket programming to use.
- - Each AMarquee connection you make automatically and transparently
- starts a separate background execution thread, so your app will
- never have to block while data is sent or received.
- - An arbitrary number of AMarquee connections may be active at once.
- - Allows you to "subscribe" to data that interests you, so that
- when the data on the server is changed you will be automatically
- notified. You never need to poll for anything!
- - An easy mechanism for sending messages to one or many other
- AMarquee clients that are logged into the same server.
- - Standard Amiga wildcarding is supported in all applicable functions.
- This allows you to easily and succinctly refer to one host or data
- item, or many, as appropriate.
- - #includes for C, C++, and PCQ Pascal are included.
- - ARexx accessible. That is, ARexx scripts can use amarquee.library
- through rexxamarquee.library for communications using the same API
- that compiled C programs do.
- - Example programs in C, C++, Pascal, and ARexx are included.
- - Operation is almost totally asynchronous for efficiency, but
- several easy synchronization methods are available if you need them.
- - Can also be used for direct client-to-client connections and
- for making inetd-launched or manually-launched daemon programs.
- - Automatically detects when the computer on the other end of
- the AMarquee connection has crashed or been shut down, even
- on idle connections.
- - In addition it can connect to any TCP service, eg. HTTP and FTP, and it will
- work in the same easy fashion like any other AMarquee connection.
-
- Features of AMarqueed (the AmiTCP server):
-
- - Works with Inet225, AmiTCP, Miami, or any other TCP stack
- that is "AmiTCP compatible".
- - Fully multithreaded design, with one server process per connection.
- - Re-entrant code, to minimize memory usage.
- - Data is stored in a filesystem-like tree structure for simplicity,
- flexibility and efficiency. Each client gets its own "home directory"
- that it may write to or read from, and each client may also
- read from the "home directories" of other clients.
- - Efficient design minimizes CPU usage, net bandwidth, and execution time.
- - Limits may be put on memory usage, number of connections, and/or
- which clients or apps may connect. Only serve the hosts and apps
- you want to serve!
- - Supports data streaming to one or many clients at once.
- - Data streaming and synchronization features let you be sure your
- data was read by all interested hosts before you update it again.
- - Automatically detects and eliminates "dead" connections (e.g.
- if the client computer was shut down without quitting politely)
- - Server may be administered remotely by clients with "privileged"
- status.
-
- WHAT'S NEW IN VERSION 51.4:
- ( "-" = new feature, "*" = bug fix)
- V51.4: (Public release 06-Aug-2000) (amarquee.library v51.4, rexxamarquee.library v51.0, AMarqueed v51.0)
- * The qm_ActualLen in QMessage could sometimes be wrong with Socket Sessions from v50.
- This probably didn't cause any trouble because you normally don't use that field.
- * Fixed some rare memory leakage.
- - Added a new feature for Socket-Sessions. Previously it was not very easy
- to use these sessions. The data received from the other host could be
- divided into several QMessages. And you couldn't explicitely tell AMarquee
- to return only entire application transfer units. Instead you had to buffer
- the data and copy all QMessages containing one transfer unit into your buffer.
-
- To solve this problem I've added a couple of tags to use with QNewSocket*Session().
- QRAWSESSION_PROTOCOLSTOPHOOK, QRAWSESSION_RECEIVE_EXCEEDING_DATA and
- QRAWSESSION_PROTOCOLSTOPHOOK_USERDATA. Now communication with hosts not
- using the AMarquee protocol should be as simple as if they did.
- Take a look on the new examples named geturl_Hook1.c and geturl_Hook2.c.
-
- * The QNew*Session() and QFreeSession() functions cleared the shared message port given
- with the tag QSESSION_SHAREDMSGPORT.
- Because of this misfunction there were problems when you created a new or freed an old
- session while there were messages waiting in the message port. You should require at
- least v.51 of amarquee.library when you use shared message ports.
- Please understand that only one task, the one which created the shared message port, may
- create and free sessions which are bound to the shared message port.
-
- For any sessions please also understand that you must make sure that only one task at
- one time use a specific session. This apply to all the Q*Op() functions, which could be
- called from several tasks if the calls are serialized.
- QFreeSession() may only be called from the task which owns the session, i.e. the task
- which created the session or have taken over a session with QReattachSession().
-
- * There were some trouble if you had set AMARQUEED_ALLOWBROWSE and AMARQUEED_RESTRICTBROWSE
- on the AMarqueed server. This bug is fixed in this version of AMarqueed.
- 1. If a client program from one host connected more than once to amarqueed, the new client
- is supposed to take over and kill the old client. Instead the old client got killed and the
- new one failed to connect with error code QERROR_ACCESS_DENIED (Server Refused Connection).
- 2. Occasionally the host path set with AMARQUEED_RESTRICTBROWSE got banned from the server.
- Both these problems happened on the AmiComSys/AMarquee server acs.hostile.cx. The last one
- occured about once a month. That's the reason for the recent down times.
- - Improved documentation and added a standard autodoc for amarquee.library to the distribution.
-
- V50.11a: (Public Release 8-Apr-2000) (amarquee.library v50.11, rexxamarquee.library v50.6, AMarqueed v49.7)
- - Added a amarquee.lib for use with vbccm68k C-compiler.
- - Modified the AMarquee_protos.h file to make it work with vbcc and other compilers.
- - AMarquee is Donationware. Now you could register online. See the distribution section in the
- guide for more info.
-
- V50.11: (Public Release 19-Mar-2000) (amarquee.library v50.11, rexxamarquee.library v50.6, AMarqueed v49.7)
- - amarquee.library now returns larger packets with a Socket-Session connection,
- instead of several small packets.
- - Added function QSetMaxRawBufSize() to library. Use it to set the maximum buffer
- size that shall be used with a Socket Session. This is the maximum size of the
- QMessage you receive. As an option you can use the tag named QRAWSESSION_MAXBUFFERSIZE
- with the QNewSocket*Session() call.
- - Updated rexxamarquee.library with the new function. Rexxamarquee.library v.50x
- requires amarquee.library v.50 or better.
- - Modified QNewSession, QNewSessionAsync, QNewHostSession, QNewServerSession().
- They now also take an additional argument with a tag list.
- Old programs compiled for v.49 or less will still work.
- New programs compiled for v.50 won't work with v.49 or less, so
- the minimum version to require with the protos, fd, and pragmas which are
- in the v.50+ AMarquee-package is 50.
- Old source code using the new header-files must be updated.
- - A tag, QSESSION_ERRORCODEPTR, was added. Set it to a pointer to a LONG-variable
- where you want the error code to be copied. This is needed because QNewSession() returns
- NULL when it fails, i.e. you can't use QFreeSession() to find out why.
- - Dropped support for the INET225 version of amarquee.library. Is anybody using it?
- - Changed the error code which is returned by QFreeSession() or copied to the
- QSESSION_ERRORCODEPTR variable when a connection to a server port failed.
- When the QNewSocketSession(Async) function is used the return code is QERROR_NO_TCPSERVER
- instead of QERROR_NO_SERVER.
- - QCreateSharedMessagePort(), QDeleteSharedMessagePort() functions added to library.
- - Added the tag QSESSION_SHAREDMSGPORT.
- - Added example amarqueesharedmp.c to show how to use the new shared message port functions.
- * The qm_Path of the QMessage received when a asynchronious connection have been established
- only contained the host name. It shall also contain the program name, like /hostname/progname,
- when QNewSessionAsync() was used.
- - AMarqueed was not updated in this release.
-
-
- ============================= Archive contents =============================
-
- Original Packed Ratio Date Time Name
- -------- ------- ----- --------- -------- -------------
- 4008 1357 66.1% 14-Feb-99 19:10:12 AMarquee.info
- 213564 59167 72.2% 06-Aug-00 21:10:42 +AMarquee.guide
- 1542 1096 28.9% 10-Apr-98 12:24:46 +AMarquee.guide.info
- 152 152 0.0% 06-Aug-00 21:22:40 +amarquee.guide.sig
- 26028 14244 45.2% 06-Aug-00 21:18:44 +amarquee.library
- 152 152 0.0% 06-Aug-00 21:23:06 +amarquee.library.sig
- 10336 4312 58.2% 06-Aug-00 21:10:46 +AMarquee.readme
- 835 268 67.9% 10-Apr-98 12:24:44 +AMarquee.readme.info
- 46528 23955 48.5% 06-Aug-00 21:18:46 +AMarqueed
- 152 152 0.0% 06-Aug-00 21:24:06 +amarqueed.sig
- 134660 32646 75.7% 06-Aug-00 21:10:58 +amarquee.doc
- 4123 1604 61.0% 10-Apr-98 12:24:48 +EditTextFile.rexx
- 11260 6410 43.0% 06-Aug-00 21:21:50 +AmarqueeDebug
- 7426 2513 66.1% 06-Aug-00 21:21:50 +amarqueedebug.c
- 6753 2323 65.6% 10-Apr-98 12:24:50 +amarqueedebug.cpp
- 7058 2305 67.3% 06-Aug-00 21:21:50 +amarqueedebug.rexx
- 13084 7303 44.1% 06-Aug-00 21:21:50 +AMarqueeDebugMultiThread
- 9720 3285 66.2% 06-Aug-00 21:21:50 +AMarqueeDebugMultiThread.c
- 9264 5541 40.1% 06-Aug-00 21:21:50 +amarqueehost
- 4180 1564 62.5% 06-Aug-00 21:21:50 +amarqueehost.c
- 6383 2116 66.8% 06-Aug-00 21:21:50 +amarqueehost.rexx
- 11936 6971 41.5% 06-Aug-00 21:21:50 +amarqueeserver
- 5312 1922 63.8% 06-Aug-00 21:21:50 +AMarqueeServer.c
- 8168 4997 38.8% 06-Aug-00 21:21:50 +amarqueesharedmp
- 5296 1632 69.1% 06-Aug-00 21:21:50 +amarqueesharedmp.c
- 9340 5601 40.0% 06-Aug-00 21:21:50 +amarqueesocketdebug
- 4245 1751 58.7% 06-Aug-00 21:21:50 +amarqueesocketdebug.c
- 9024 5414 40.0% 06-Aug-00 21:21:50 +amarqueesockethost
- 3379 1417 58.0% 06-Aug-00 21:21:50 +amarqueesockethost.c
- 656 319 51.3% 06-Aug-00 21:21:50 +amarqueetags.o
- 7468 4788 35.8% 06-Aug-00 21:21:52 +BounceCount
- 2915 1169 59.8% 06-Aug-00 21:21:52 +BounceCount.c
- 522 275 47.3% 06-Aug-00 21:21:52 +dmakefile
- 494 262 46.9% 10-Apr-98 12:24:52 +dmakefile.bak
- 7600 4812 36.6% 06-Aug-00 21:21:52 +geturl
- 3240 1351 58.3% 06-Aug-00 21:21:52 +GetURL.c
- 2788 1247 55.2% 06-Aug-00 21:21:52 +geturl.rexx
- 8244 5104 38.0% 06-Aug-00 21:21:52 +geturl_hook1
- 7439 2578 65.3% 06-Aug-00 21:21:52 +GetURL_Hook1.c
- 7792 4924 36.8% 06-Aug-00 21:21:52 +geturl_Hook2
- 4588 1855 59.5% 06-Aug-00 21:21:52 +GetURL_Hook2.c
- 2431 1104 54.5% 06-Aug-00 21:21:52 +killclients.rexx
- 10552 6495 38.4% 06-Aug-00 21:21:52 +MiniIRC
- 6544 2271 65.2% 06-Aug-00 21:21:52 +MiniIRC.c
- 3336 1984 40.5% 06-Aug-00 21:21:52 +PascalTest
- 1147 506 55.8% 06-Aug-00 21:21:52 +PascalTest.p
- 7052 4500 36.1% 06-Aug-00 21:21:52 +RemoveTest
- 2551 1039 59.2% 06-Aug-00 21:21:52 +RemoveTest.c
- 9400 5793 38.3% 06-Aug-00 21:21:52 +SillyGame
- 8219 2592 68.4% 06-Aug-00 21:21:52 +SillyGame.c
- 7472 4774 36.1% 06-Aug-00 21:21:52 +StreamCheck
- 3137 1245 60.3% 06-Aug-00 21:21:52 +StreamCheck.c
- 7336 4699 35.9% 06-Aug-00 21:21:52 +Streamgen
- 2617 1093 58.2% 06-Aug-00 21:21:52 +streamgen.c
- 7528 4788 36.3% 06-Aug-00 21:21:52 +Synctest
- 3255 1305 59.9% 06-Aug-00 21:21:52 +SyncTest.c
- 2649 1169 55.8% 06-Aug-00 21:21:52 +sysmessage.rexx
- 5303 1363 74.2% 19-Mar-00 00:25:18 +AMarquee49_protos.h
- 6303 1558 75.2% 08-Apr-00 13:18:32 +AMarquee_protos.h
- 1504 330 78.0% 19-Mar-00 00:25:18 +amarqueetags.c
- 656 319 51.3% 19-Mar-00 00:25:18 +amarqueetags.o
- 1584 507 67.9% 19-Mar-00 00:25:18 +AMarquee49_lib.fd
- 1795 575 67.9% 19-Mar-00 00:25:18 +AMarquee_lib.fd
- 8455 1436 83.0% 19-Mar-00 00:25:18 +AMarquee.h
- 7072 1265 82.1% 19-Mar-00 00:25:18 +AMarquee49.h
- 8708 1610 81.5% 08-Apr-00 13:17:34 +amarquee.lib
- 6297 2496 60.3% 06-Aug-00 21:11:16 +AMarquee.h
- 4161 1701 59.1% 19-Mar-00 00:25:18 +AMarquee49.h
- 2177 522 76.0% 19-Mar-00 00:25:18 +AMarquee49_pragmas.h
- 2548 597 76.5% 19-Mar-00 00:25:18 +AMarquee_pragmas.h
- 301 195 35.2% 19-Mar-00 00:25:18 +AMarquee.h
- 305 197 35.4% 19-Mar-00 00:25:18 +AMarquee49.h
- 409 217 46.9% 19-Mar-00 00:25:18 +AMarquee.h
- 413 221 46.4% 19-Mar-00 00:25:18 +AMarquee49.h
- 13339 2949 77.8% 19-Mar-00 00:25:08 +Session.h
- 12182 2870 76.4% 19-Mar-00 00:25:08 +Session49.h
- 23923 5949 75.1% 19-Mar-00 00:24:42 +Install_AMarquee
- 612 329 46.2% 10-Apr-98 12:24:48 +Install_AMarquee.info
- 10298 2903 71.8% 06-Aug-00 21:18:18 +AMarquee.i
- 6024 817 86.4% 19-Mar-00 00:24:58 +AMarquee.lib
- 1318 910 30.9% 06-Aug-00 21:24:48 +public-pgp-key.asc
- 13040 6771 48.0% 06-Aug-00 21:20:56 +rexxamarquee.library
- 152 152 0.0% 06-Aug-00 21:23:26 +rexxamarquee.library.sig
- -------- ------- ----- --------- --------
- 851759 314970 63.0% 07-Aug-100 00:18:50 83 files
-